The Broker Times
Grow smarter.
Broker better.
ZapierEDITION · HUBSPOT

The AI Lead Reactivation Engine

An automated email, SMS and AI phone-calling system that works your dead CRM leads for you — and hands you back the ones that are ready to talk. This is the complete build, screen by screen, in Zapier.

Setup time: 35–45 minutes No coding HubSpot edition v1.4 · August 2026
Start here

What you are actually building

Every broker is sitting on a graveyard. Hundreds — often thousands — of people who once enquired about finance, never converted, and have not been contacted since.

This system goes back through them, one at a time, and restarts the conversation. It writes a personal email in your voice, follows up by SMS, and for the highest-intent leads it puts through an AI phone call. When someone replies, a second workflow reads the reply, works out what they meant, and either books them in, parks them, or removes them permanently.

You do nothing except answer the hot ones.

Email

A short, human, compliant re-engagement email written fresh for each lead — never a mail-merge blast.

SMS

A follow-up text under 300 characters with a plain-English opt-out, sent only to leads with a mobile on file.

AI phone call

For high-priority leads only, an AI voice agent calls, has a real conversation, and books the callback.

The engine

Seven steps, start to finish

Two workflows. One sends. One listens.

WORKFLOW 1 — OUTBOUND STEP 1 HubSpot list Dormant leads enter STEP 2 Consent gate Opt-outs never pass STEP 3 AI writes it Personal, compliant STEP 4–6 Send Email · SMS · AI call STEP 7 Log it Back to CRM WORKFLOW 2 — THE REPLY TRIGGER Lead replies Email, SMS or call AI TRIAGE What did they mean? Intent + confidence HOT Deal created, you are alerted WARM Nurtured and re-queued NOT NOW Parked for 90 days OPT OUT Suppressed immediately, forever
Compatibility

It runs on the CRM you already have

The engine is CRM-agnostic. Only the first module and the last module touch your CRM — everything in between is identical no matter what you run. That is why one product covers the whole market.

Salesforce
Salesforce
Native
HubSpot
HubSpot
Native
Pipedrive
Pipedrive
Native
Zoho CRM
Zoho CRM
Native
Salestrekker
Salestrekker
API
Mercury Nexus
Connective
API
MyCRMLMG
LMG MyCRM
API
Effi
Effi
API
Finsure Infynity
Finsure Infynity
API
ActivePipe
ActivePipe
Bridge
BrokerEngine
BrokerEngine
Bridge
AFG
AFG Suite360
Bridge
Native — a ready-made connector, sign in and go API — connects over the platform's API, subject to your aggregator granting access Bridge — runs through a Google Sheets staging layer you export to
How the bridge works, in one paragraph

Closed platforms will not let an automation read them directly. So you export your dormant leads to a Google Sheet — a five-minute job you repeat monthly — and the engine reads the sheet instead of the CRM. Everything downstream is untouched: same AI, same email, same SMS, same AI call, same reply triage. The only thing you lose is the automatic write-back, which you replace with a second sheet the engine fills in and you re-import.

⚠ Check before you promise

API access to aggregator-owned platforms is granted by the aggregator, not the broker, and the answer differs by group and sometimes by brokerage. Confirm access is available for a given account before quoting a native build — and default to the bridge method, which works everywhere without anyone's permission.

Prep

Before you open Zapier

Fifteen minutes here saves an hour later. Get these four things ready.

  • A Zapier account on a paid plan. The free plan does not allow multi-step Zaps, and this one has four to seven steps. Starter is enough to begin.
  • A HubSpot list called “Dormant Leads — Reactivation”. Build it as a static list in HubSpot: contacts created more than 6 months ago, lifecycle stage not customer, and email address is known. This list is your campaign — whoever you drop in gets worked.
  • An OpenAI API key. platform.openai.com → API keys → Create new secret key. Add about $10 of credit; that covers thousands of leads.
  • A sending mailbox. Gmail or Outlook connected to Zapier. Use a real, warmed mailbox on your own domain — not a brand-new address.
⚠ Do this first — two HubSpot properties

The engine stores its campaign state on the contact record. Two custom Contact properties carry it, and everything else in this guide assumes they exist. Create them before you import anything, or the HubSpot modules will show as invalid.

In HubSpot go to SettingsPropertiesCreate property, object type Contact, and add these two. Use the internal names exactly as written — the blueprints are mapped to them.

  1. Label TBT reactivation state · internal name tbt_reactivation_state · field type Single-line text. Holds one of queued sent hot warm not_now opt_out.
  2. Label TBT last reactivation · internal name tbt_last_reactivation_at · field type Date picker. Enforces the 90-day frequency cap.

Why this matters more than it looks. tbt_reactivation_state = opt_out is the suppression flag. When somebody replies STOP, workflow 2 writes that value, and the consent gate on the outbound side refuses to pass any contact carrying it. That is the entire opt-out mechanism. Without these two properties there is nothing stopping the engine contacting someone who has already asked you not to.

⚠ One rule before you touch anything

This system contacts real people who gave you their details, and only those people. It is not a cold-outreach tool and must never be pointed at a purchased list. Every message it sends carries an opt-out, and the opt-out is honoured automatically and permanently. Keep it that way — that is the difference between a reactivation campaign and a spam complaint.

The build

Workflow 1 — the outbound engine

Every screen below is the real thing. Follow them in order and you will have a working Zap.

1
Trigger

Watch your dormant-leads list in HubSpot

In Zapier click CreateZap. The first card on the canvas is the trigger — the thing that starts everything.

  1. Search for and choose HubSpot.
  2. Trigger event: New Contact in List. Note the Instant tag — HubSpot pushes to Zapier the moment someone is added, so there is no delay. This trigger needs Marketing Hub Starter or above. On free HubSpot, use Contact Recently Created or Updated instead and filter on a custom property in step 2.
  3. Account: connect your HubSpot portal, or pick the one already connected.
  4. Click Continue.
zapier.com — Step 1 · Setup
Zapier step 1 setup showing HubSpot and New Contact in List
What good looks like. App, trigger event and account all filled, and the Setup tab shows a green tick.

Now the Configure tab asks which list to watch. Choose the dormant list you built earlier. This is the single most important field in the whole Zap — it decides who gets contacted.

zapier.com — Step 1 · Configure
Zapier step 1 configure showing the Contact List picker
Pick your own list here. Leave Additional properties to retrieve empty — the default properties already include first name, email, mobile phone and lifecycle stage, which is everything the rest of the Zap needs.

On the Test tab, click Test trigger. Zapier pulls a real contact from that list so the later steps have live data to map against. Pick one and click Continue with selected record.

2
Safety

Add the consent gate

Never let the engine run without this step. It is the thing that keeps you compliant and keeps your domain reputation intact.

  1. Click the + under step 1.
  2. Under Popular built-in tools, choose Filter.
zapier.com — Add a step
Zapier app picker showing built-in tools including Filter and Paths
Built-in tools live on the right. Filter, Paths, Delay and Formatter are all free with your plan and do not need a connected account.

Set two rules, joined with And:

FieldConditionValueWhy
Contact information: EmailExistsNo email, nothing to send.
Contact information: Lifecycle Stage(Text) Does not exactly matchcustomerNever re-pitch an existing client.
zapier.com — Step 2 · Filter conditions
Zapier filter conditions with email exists and lifecycle stage not customer
Add your own third rule. If you have created a custom HubSpot property such as Reactivation Opt Out, add it here as a third And rule set to is false. Belt and braces.
Why a filter and not a smarter list?

Lists drift. Someone edits the list criteria six months from now and suddenly a thousand customers are in it. The filter is a second lock on the door, and it sits inside the Zap where nobody will accidentally change it.

3
The clever bit

Let AI write the message

Add a step, search ChatGPT (OpenAI), and choose the action event Conversation (the one marked Recommended, not Legacy). Connect your OpenAI account with the API key you created earlier.

On the Configure tab there are three fields that matter.

Model. Leave it on gpt-4o. It is fast, cheap and writes better Australian English than the mini models.

User Message. This is the lead's file. Type the fixed text, then use the + button to insert the HubSpot fields where shown in orange:

User Message — paste this, then insert the fieldsCopy
Reactivate this dormant lead. Broker business: [YOUR BUSINESS NAME].
Broker first name: [YOUR FIRST NAME]. SMS opt out wording: Reply STOP
to opt out. Lead first name: {{Contact information: First Name}}
Email: {{Contact information: Email}}

Instructions. This is the system prompt — the rules the AI writes under. Paste it exactly:

Instructions — paste this exactlyCopy
You are the AI assistant for an Australian mortgage broker. Write ONE
short, warm, compliant re-engagement email to a dormant lead who once
enquired about finance and then went quiet. RULES: Australian English.
Plain, human, no hype, no emojis. Never give financial advice, never
quote a rate, never promise approval. Never create false urgency. Under
120 words. Sign off from the broker. End with one plain sentence giving
an easy opt out. Return ONLY the email body as simple HTML. No subject
line, no JSON, no commentary, no code fences.
zapier.com — Step 3 · Configure
Zapier ChatGPT Conversation step configured with user message and instructions
The orange pills are live data. Anything with the HubSpot icon is pulled fresh for each lead. Plain text stays the same every time.
Read the last line of the prompt again

“Return ONLY the email body as simple HTML. No subject line, no JSON, no commentary, no code fences.” Without it, ChatGPT will happily wrap its answer in ```json or add “Here's your email!” at the top — and that goes straight into the message your lead receives. This one sentence is the difference between a professional email and an obviously-automated one.

Click Continue, then Test step. You should get a green confirmation and a readable email in the output.

zapier.com — Step 3 · Test
Zapier ChatGPT step test succeeded
Status: completed. Scroll down to Output Text and actually read what it wrote. If you would not send it yourself, tighten the Instructions and retest — this is the step worth spending ten minutes on.
4
Channel one

Send the email

Add a step and choose Gmail → Send Email (or Outlook, or Email by Zapier if you just want to see it work first). Then map three fields:

FieldWhat to put in it
ToInsert 1. Contact information: Email
SubjectType it yourself — A quick question about your finance enquiry tests well. Keep it lower-case and human.
BodyInsert 3. Output Text from the ChatGPT step
zapier.com — Step 4 · mapping the body
Zapier insert data panel showing previous steps available for mapping
The insert-data panel. Every previous step appears here. Step 3 is the AI — open it and pick Output Text. These two screens were captured on Email by Zapier; the Gmail step has the same To / Subject / Body fields in the same order.
zapier.com — Step 4 · Configure
Zapier send email step configured with body mapped and options
Leave the rest blank — attachment, Cc, Bcc, read receipts. Set From Name to your own name if the field is available; it lifts open rates noticeably.
⚠ Don't ship on Email by Zapier

Email by Zapier needs no setup, which makes it perfect for testing — but it caps at roughly 10 emails per hour and sends from Zapier's infrastructure, not yours. For a real campaign, connect Gmail or Outlook so replies land in your inbox and your domain builds its own sending reputation.

5
Channel two

Add the SMS follow-up

Email alone gets you maybe a 2–4% reply rate on dead leads. SMS roughly triples it. Add these two steps:

  1. Delay by Zapier → Delay For, set to 2 days. Give the email a chance to land first.
  2. Filter by Zapier — only continue if Contact information: Mobile Phone Number Exists.
  3. Your SMS app — Kudosity (formerly Burst SMS), Twilio, or ClickSend — action Send SMS.
SMS message fieldCopy
Hi {{Contact information: First Name}}, it's [YOUR FIRST NAME] from
[YOUR BUSINESS NAME]. You enquired with us a while back about finance -
are you still looking? Happy to help either way. Reply STOP to opt out.
The opt-out is not optional

Under the Spam Act 2003, every commercial message needs a functional unsubscribe. Reply STOP to opt out costs you eight words and removes your single biggest compliance risk. Workflow 2 processes those STOPs automatically.

6
Channel three

The AI phone call

This is the step that makes people sit up. For your highest-priority leads, an AI voice agent rings them, has a genuine back-and-forth conversation, and books the callback into your diary.

  1. Create a voice agent at retellai.com and give it the script from your pack. Copy the Agent ID, the phone number and your API key.
  2. In Zapier add Webhooks by Zapier → POST.
  3. URL: https://api.retellai.com/v2/create-phone-call
  4. Payload Type: Json. Headers: Authorization = Bearer YOUR_RETELL_API_KEY
Data fields for the webhookCopy
from_number          YOUR_RETELL_NUMBER
to_number            {{Contact information: Mobile Phone Number}}
override_agent_id    YOUR_RETELL_AGENT_ID
first_name           {{Contact information: First Name}}
broker_name          [YOUR FIRST NAME]
business_name        [YOUR BUSINESS NAME]
⚠ Calling rules apply

Check numbers against the Do Not Call Register, keep calls inside 9am–8pm weekdays and 9am–5pm Saturdays, and have the agent identify itself as an assistant calling on your behalf within the first sentence. Put a Zapier Delay Until step in front of this if your campaign runs overnight.

7
Housekeeping

Log the touch back to HubSpot

Add a final step: HubSpot → Create Engagement (type: Note), associated to the contact ID from step 1.

Note bodyCopy
TBT Reactivation Engine - contacted {{zap_meta_human_now}}.
Email sent. SMS sent. Message: {{3. Output Text}}

Skip this and your CRM has no memory of what the robot said. Do it, and any broker in your team can open a contact and see the whole conversation in one place.

The build

Workflow 2 — the reply handler

The first workflow starts conversations. This one is where the money is: it reads every reply and decides what happens next, in seconds, at any hour.

1
Trigger

Catch the reply

Create a second Zap. Trigger: Webhooks by Zapier → Catch Hook. Zapier gives you a URL — paste it into your SMS provider's inbound-reply callback and your Retell agent's webhook settings so every reply from every channel lands here.

For email replies, use Gmail → New Email Matching Search instead, searching your reactivation sender address.

2
Triage

Ask the AI what they meant

Add ChatGPT (OpenAI) → Conversation again, with this prompt in Instructions:

Reply classification promptCopy
You classify replies from dormant finance leads for an Australian
mortgage broker. Classify the reply into exactly one intent:

HOT      - wants to talk now, asks about next steps, gives availability,
           or asks a specific finance question.
WARM     - interested but later, asks to be contacted in a few weeks or
           months, or is curious but non-committal.
NOT_NOW  - not interested right now, already sorted elsewhere, or asks
           to be left alone for now without an explicit opt-out.
OPT_OUT  - explicitly asks to be removed or unsubscribed, or replies STOP.

Also write a one-line summary and a suggested next action for the broker.
Return ONLY a JSON object with these exact keys:
intent, confidence, summary, suggested_next_action, sentiment

In User Message, insert the reply text from the webhook plus the lead's name and contact ID.

3
Routing

Four paths, four outcomes

Add Paths by Zapier and create four. Each path's rule reads the intent value from step 2.

PathRuleWhat it does
🔥 Hotintent contains HOTHubSpot → Create Deal in your first pipeline stage, then Gmail → send you an alert with the reply and the AI's suggested next action.
Warmintent contains WARMHubSpot → Update Contact. Lead status OPEN, tbt_reactivation_state = warm, tbt_last_reactivation_at = today. Add them to your nurture list.
Not nowintent contains NOT_NOWHubSpot → Update Contact. Lead status stays OPEN, tbt_reactivation_state = not_now, tbt_last_reactivation_at = today. Not a no — a not yet, and the date is what parks them for 90 days.
Opt outintent contains OPT_OUTHubSpot → Update Contact. tbt_reactivation_state = opt_out, lead status UNQUALIFIED. Both are conditions on the consent gate in workflow 1, so this contact can never be selected again.
⚠ How suppression actually works

The opt-out path does not delete anybody and it does not touch HubSpot's own hs_email_optout property, which the API cannot write to. It sets tbt_reactivation_state to opt_out, and the consent gate in workflow 1 filters out any contact carrying that value. Your dormant-leads list filter must include that condition — if it does not, nothing is suppressing anyone.

✓ Test the opt-out path first

Before you turn anything on, send yourself a test reply saying just “STOP”, confirm it lands in the opt-out path, then open the contact in HubSpot and check tbt_reactivation_state now reads opt_out. Then re-run workflow 1 and confirm that contact is not contacted a second time. That last step is the one that matters.

Launch

Turning it on without blowing anything up

  1. Publish both Zaps but leave the HubSpot list empty.
  2. Add yourself to the dormant list. Watch the email and SMS arrive. Reply to each one and check the triage sends you the right alert.
  3. Add ten real leads. Read every message that goes out for the first ten. You are checking tone, not mechanics.
  4. Scale in batches of 50 a day for the first week. This protects your sending reputation and gives you time to actually answer the hot replies.
  5. Then open the tap. Add the whole list.
What to expect from 1,000 dead leads

Across brokers running this pattern, a well-written reactivation sequence on a genuinely dormant list typically produces a reply rate in the mid single digits, of which roughly a quarter to a third are worth a real conversation. Your numbers will depend entirely on how old the list is and how good the original enquiry was — run your first batch, measure it, and use your own figures from then on. The leads cost you nothing; they are already in the CRM.

When it misbehaves

Troubleshooting

SymptomCauseFix
Zap never firesThe list is a HubSpot active list, or nobody has been added since you publishedUse a static list, and re-add one contact to trigger it
Email contains ```json or “Here's your email”The Instructions prompt was editedRe-paste the last line of the prompt from step 3 word for word
“Account connection is expired”Gmail or HubSpot OAuth token lapsedClick Reconnect this account and sign in again
SMS step is skipped every timeMobile numbers are stored in Phone, not Mobile PhonePoint the filter and the SMS step at whichever field your CRM actually uses
Replies never trigger workflow 2Webhook URL not saved in the SMS providerRe-paste the Catch Hook URL and send a test reply
Task limit warningsEach lead consumes roughly 4–6 Zapier tasks (triggers and filters are free; every action is billed)Budget 4–6 tasks per lead when you size your plan
One last thing

Prefer this built for you?

The same engine, configured against your CRM, your voice and your compliance settings — installed and tested, with the first batch running before you hang up.

Talk to The Broker Times